package test_unitaire;

import static org.junit.Assert.assertTrue;

import java.util.Calendar;

import org.junit.Test;

import buisness_service.PosteRevenu;
import buisness_service.Rapport;
import buisness_service.Rapport.Mois;
import buisness_service.Revenu;
import buisness_service.User;

public class Test_Revenu {

	@Test
	public void testRevenuFloatCalendarUser() {

		User u = new User();
		Calendar d = Calendar.getInstance();
		d.set(2009, Calendar.DECEMBER, 12);
		Revenu rev = new Revenu(35, d, u);
		assertTrue(rev.getId() == Rapport.nbEntities);
		assertTrue(rev.getMontant() == 35);
		assertTrue(rev.getUser().getRevenus().get(0) == rev);
		assertTrue(rev.getUser().getEconomie().getMontant() == 35);
	
		Rapport.postesDpenses.clear();
		Rapport.postesRevenus.clear();
	}

	@Test
	public void testRevenuFloatCalendarPosteRevenuUser() {
		

		User u = new User();
		Calendar d = Calendar.getInstance();
		d.set(2009, Calendar.DECEMBER, 12);
		PosteRevenu salaire = new PosteRevenu("salaire");
		salaire.getSous_categorie().add("prime");
		Revenu rev = new Revenu(salaire.getSous_categorie().get(0), 35, d,
				salaire, u);
		assertTrue(rev.getId() == Rapport.nbEntities);
		assertTrue(rev.getMontant() == 35);
		assertTrue(rev.getUser().getRevenus().get(0) == rev);
		assertTrue(rev.getUser().getEconomie().getMontant() == 35);
		assertTrue(rev.getPosteRevenu().getRevenus().get(0) == rev);
		
		Rapport.postesDpenses.clear();
		Rapport.postesRevenus.clear();
	}

	@Test
	public void Test2() {
		User u = new User();
		Calendar d = Calendar.getInstance();
		d.set(2009, Calendar.APRIL, 12);
		Revenu rev = new Revenu(35, d, u);
		assertTrue(d.get(2) == 3);
		assertTrue(d.get(1) == 2009);
		assertTrue(rev.getId() == Rapport.nbEntities);
		assertTrue(rev.getMontant() == 35);
		assertTrue(rev.getUser().getRevenus().get(0) == rev);
		assertTrue(rev.getUser().getEconomie().getMontant() == 35);
		assertTrue(rev.getRevenu_jour().getFinance_jour().getFinance_mois()
				.getIndexFinance_annee() == 0);
		assertTrue(rev.getRevenu_jour().getFinance_jour().getFinance_mois()
				.getIndex_finance_mois() == 0);
		assertTrue(rev.getRevenu_jour().getFinance_jour()
				.getIndex_finance_jour() == 0);

		assertTrue(u.getRapport().get(0).getFinances_mois().get(0)
				.getFinances_jour().get(0).getRev_jour().getRevenu().get(0) == rev);
		PosteRevenu salaire = new PosteRevenu("salaire");
		salaire.getSous_categorie().add("essence");
		d.set(2019, Calendar.APRIL, 12);
		Revenu rev2 = new Revenu(salaire.getSous_categorie().get(0), 35, d,
				salaire, u);

		assertTrue(rev2.getNom() == "essence");
		assertTrue(u.getRapport().get(1).getFinances_mois().get(0)
				.getRev_mois().getRevenus_jour().get(0).getRevenu().get(0) == rev2);
		assertTrue(u.getRapport().get(1).getRevenu_annee()
				.getRevenu_mois().get(0).getRevenus_jour().get(0).getRevenu()
				.get(0) == rev2);
	

		Rapport.postesDpenses.clear();
		Rapport.postesRevenus.clear();

	}
	
	@Test 
	public void Test3()
	{
		User u = new User();
		Calendar d = Calendar.getInstance();
		d.set(2009, Calendar.DECEMBER, 12);
		PosteRevenu salaire = new PosteRevenu("salaire");
		salaire.getSous_categorie().add("prime");
		Revenu rev = new Revenu(salaire.getSous_categorie().get(0), 35, d,
				salaire, u);

		d.set(2009, Calendar.DECEMBER, 13);
		Revenu rev2 = new Revenu(35, d, u);

		d.set(2009, Calendar.APRIL, 13);

		Revenu rev3 = new Revenu(35, d, u);

		assertTrue(rev3.getId() == Rapport.nbEntities);
		assertTrue(rev.getMontant() == 35);
		assertTrue(u.getRevenus().get(0) == rev);
		assertTrue(u.getEconomie().getMontant() == 105);
		assertTrue(salaire.getRevenus().get(0) == rev);
		assertTrue(u.getRapport().get(0).getFinances_mois().get(0)
				.getMois() == Mois.Decembre);
		assertTrue(u.getRapport().get(0).getFinances_mois().get(1)
				.getMois() == Mois.Avril);

		assertTrue(u.getRapport().get(0).getFinances_mois().get(0)
				.getRev_mois().getRevenus_jour().get(0).getRevenu().get(0) == rev);

		assertTrue(u.getRapport().get(0).getFinances_mois().get(0)
				.getRev_mois().getRevenus_jour().get(1).getRevenu().get(0) == rev2);

		assertTrue(u.getRapport().get(0).getFinances_mois().get(1)
				.getRev_mois().getRevenus_jour().get(0).getRevenu().get(0) == rev3);

		
		Rapport.postesDpenses.clear();
		Rapport.postesRevenus.clear();


	}

}
